package com.orangelife.service.PropFeeType;

import java.util.List;
import java.util.Map;

import com.orangelife.exception.AppBizException;
import com.orangelife.service.PropFeeType.model.PropFeeTypeDto;

/*****************************************************************
 * Copyright(C) ORANGELIFE Corporation 2015. All Rights Reserved.
 *****************************************************************/
/*
 * ============================================================== 功能名
 * PropFeeType类的 service层的增删改查
 * 
 * @author @author zhr
 * 
 * @version 1.1.0
 * 
 * @date 2016-03-07 16:43:12
 * ==============================================================
 */
public interface IPropFeeTypeService {

	public List<Map<String, Object>> getPropFeeType(String commID)
			throws AppBizException;

	public List<Map<String, Object>> getPropFeeTypeCode(String[] commIDs)
			throws AppBizException;

	/***
	 * 查询获取统计的缴费类型编码
	 * 
	 * @param servletRequest
	 * @param payOrderID
	 * @param payMoney
	 * @param payName
	 * @param notifyID
	 * @return
	 * @throws Exception
	 */
	public List<Map<String, Object>> getPropFeeTypeCode(String[] commIDs,
			String[] codes) throws AppBizException;

	/***
	 * 查询获取统计的缴费类型编码新根据级别
	 * 
	 * @param servletRequest
	 * @param payOrderID
	 * @param payMoney
	 * @param payName
	 * @param notifyID
	 * @return
	 * @throws Exception
	 */
	public List<Map<String, Object>> getPropFeeTypeCodeByLevel(
			String[] commIDs, String[] codes, String level)
			throws AppBizException;

	/***
	 * 查询缴费类型（包含父类）
	 * 
	 * @param servletRequest
	 * @param payOrderID
	 * @param payMoney
	 * @param payName
	 * @param notifyID
	 * @return
	 * @throws Exception
	 */
	public List<Map<String, Object>> getPropFeeTypeLevel(String commID,
			String[] codes) throws AppBizException;

	/***
	 * 查询缴费类型（包含父类）Map类型
	 * 
	 * @param servletRequest
	 * @param payOrderID
	 * @param payMoney
	 * @param payName
	 * @param notifyID
	 * @return
	 * @throws Exception
	 */
	public Map<String, Map<String, Object>> getPropFeeTypeLevelForMap(
			String commID, String[] codes) throws AppBizException;

	public List<PropFeeTypeDto> selectByPrimaryKey(String feeTypeId)
			throws AppBizException;

	public List<PropFeeTypeDto> selectByCommID(String commID)
			throws AppBizException;

	public List<PropFeeTypeDto> selectByPropFeeTypeDto(
			PropFeeTypeDto propFeeTypeDto) throws AppBizException;

	public void insertSelective(PropFeeTypeDto propFeeTypeDto)
			throws AppBizException;

	public void updateByPrimaryKeySelective(PropFeeTypeDto propFeeTypeDto)
			throws AppBizException;

	public void deleteByPrimaryKey(String feeTypeId) throws AppBizException;

	public void updateItemStat(String feeTypeId) throws AppBizException;

	/**
	 * 用途 添加propFeeType（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-07-19 10:50:12
	 * @param propFeeType
	 * @return
	 * @throws AppBizException
	 */
	public int addPropFeeType(PropFeeTypeDto propFeeType)
			throws AppBizException;

	public int addPropFeeType(List<PropFeeTypeDto> propFeeType)
			throws AppBizException;

	/**
	 * 用途 添加propFeeType（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-07-19 10:50:12
	 * @param propFeeType
	 * @return
	 * @throws AppBizException
	 */
	public int addPropFeeTypes(PropFeeTypeDto propFeeType)
			throws AppBizException;

	/**
	 * 用途 修改propFeeType（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-07-19 10:50:12
	 * @param propFeeType
	 * @return
	 * @throws AppBizException
	 */

	public int editPropFeeType(PropFeeTypeDto propFeeType)
			throws AppBizException;

	/**
	 * 用途 单个查询 （橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-07-19 10:50:12
	 * @param propFeeTypeID
	 * @return
	 * @throws AppBizException
	 */

	public PropFeeTypeDto findPropFeeTypeByID(String propFeeTypeID)
			throws AppBizException;

	/**
	 * 用途 逻辑删除（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-07-19 10:50:12
	 * @param propFeeTypeID
	 * @return
	 * @throws AppBizException
	 */
	public int deletePropFeeTypeByLogic(String propFeeTypeID)
			throws AppBizException;

	/**
	 * 用途 查询列表 （橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-07-19 10:50:12
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizExceptionception
	 */
	public List<Map<String, Object>> findPropFeeTypeByPage(String type,
			String commID, String tsCreate, String search, int pageNo,
			int pageSize) throws AppBizException;

	/**
	 * 用途 查询列表（返回对对象）（橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-07-19 10:50:12
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizException
	 */
	public List<PropFeeTypeDto> getPropFeeTypeByPage(String tsCreate,
			String search, int pageNo, int pageSize) throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeType（橙子生活）(返回Map<String, Object>)
	 * 
	 * @author
	 * @date 创建时间 2016-07-19 10:50:12
	 * @param feeTypeID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param feeTypeName
	 *            (非必填字段)
	 * 
	 * @param type
	 *            (非必填字段)
	 * 
	 * @param belongType
	 *            (非必填字段)
	 * 
	 * @param feeTypePID
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> selectPropFeeTypeByRelevantID(
			String feeTypeID, String commID, String feeTypeName, String type,
			String belongType, String feeTypePID) throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeType（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-07-19 10:50:12
	 * @param feeTypeID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param feeTypeName
	 *            (非必填字段)
	 * 
	 * @param type
	 *            (非必填字段)
	 * 
	 * @param belongType
	 *            (非必填字段)
	 * 
	 * @param feeTypePID
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeTypeDto> findPropFeeTypeByRelevantID(String feeTypeID,
			String commID, String feeTypeName, String type, String belongType,
			String feeTypePID) throws AppBizException;

	public List<PropFeeTypeDto> findPropFeeTypeByRelevantID(String feeTypeID,
			String commID, String feeTypeName, String type, String belongType,
			String feeTypePID, String code) throws AppBizException;

	/**
	 * 用途 批量查询propFeeType（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-07-19 10:50:12
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeTypeDto> bauthfindPropFeeType(List<String> propFeeTypeIDs)
			throws AppBizException;

	/**
	 * 用途 批量查询propFeeType（橙子生活）(返回Map)
	 * 
	 * @author
	 * @date 创建时间 2016-07-19 10:50:12
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> bauthfindPropFeeTypeByMap(
			Map<String, Object> propFeeType) throws AppBizException;

	/**
	 * 用途 清除
	 * 
	 * @author
	 * @date 创建时间 2016-07-19 10:50:12
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public void clearCache() throws AppBizException;

	/****
	 * 查询费用
	 * 
	 * @param commID
	 * @param tsCreate
	 * @param search
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> findPropFeeTypeInfos(String type,
			String commID, String tsCreate, String search, int pageNo,
			int pageSize) throws AppBizException;

	/***
	 * 获取费用树形
	 * 
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> getFeeTypeTree(String commID)
			throws AppBizException;

	/***
	 * 查询同步的信息费用类目
	 * 
	 * @param commID
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> getFnumber(String commID)
			throws AppBizException;

	/**
	 * 用途 批量查询propFeeType（橙子生活）(返回Map)
	 * 
	 * @author
	 * @date 创建时间 2016-07-19 10:50:12
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> selectPropFeeTypeByMap(
			Map<String, Object> params) throws AppBizException;

	/***
	 * 根据费用类型查询关联的费用
	 * 
	 * @param map
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> getFeeTypeByFeeDetail(
			Map<String, Object> map) throws AppBizException;
	
	
	/***
	 * 根据费用类型查询关联的费用
	 * 
	 * @param map
	 * @return
	 * @throws AppBizException
	 */
	public Map<String, PropFeeTypeDto> getFeeTypePrice(
			String commID,String apartmentID) throws AppBizException;

}